次の変化は Cスタイルの配列 から std::array は、次のような根本的な転換を示しています 型安全性 および ジェネリックプログラミング 現代C++におけるものです。
1. ポインタのデキャイ問題
レガシーな配列(int arr[N])は「ポインタのデキャイ」に苦しんでいます。関数に渡されたとき、サイズのメタデータを失い、生のポインタ(int*)に変換されます。これは安全でないポインタ演算やバッファオーバーフローを引き起こします。
2. C++11による近代化
std::array は、 ゼロオーバーヘッドのラッパー 生の配列の周りに薄く包み込みます。STL(標準テンプレートライブラリ)と統合しながら、 5ルールを尊重しています。
3. std::forwardによるパーフェクトフォワーディング
C++11では std::forward を導入し、 std::array オブジェクトがテンプレートラッパーを通じて重複コピーされることなく移動することを保証しました。 参照のコラプス規則参照のコラプス規則を利用することで、オブジェクトの値カテゴリ(左辺値と右辺値)を保持します。
$$T\&\& + \& \rightarrow T\&$$
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>